<?php
/*
 * $Id$
 *
 *
 */

if (!defined('BASEPATH')) exit('No direct script access allowed');

class Missioni extends MX_Controller {
	var $template = array();

	function __construct()
	{
		parent::__construct();
		$this->template['module']	= 'adozioni';
		$this->template['nome_mese'] = array(1 => 'Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'); 
		$this->load->model('adozioni_model', 'ado');
        $this->load->helper('adozioni');

	}

	
	function index()
	{
		$this->template['title'] = __("Report Missioni", "adozioni");
		$this->template['anno'] = date("Y");
        $this->template['rimesse'] = $this->ado->get_rimesse();
		$this->template['arr_mese'] = array(1,2,3,4,5,6,7,8,9,10,11,12);
		$this->template['categorie'] = $this->ado->get_categorie();
		$this->template['anni'] = $this->ado->get_anni();
		

		$this->load->model('missioni_model', 'mis');
		$this->template['missioni'] = $this->mis->get_list();
		
		$this->layout->load($this->template, 'contabilita_missioni_index');
	}
	
	function contabilita($detail = 'none', $id_missione = null, $anno = null, $mese = null)
	{
		if($detail == 'none')
		{
		
			$anno = $this->input->post('anno');
			$id_missione = $this->input->post('id_missione');
			
			$this->load->model('missioni_model', 'mis');
			$missione = $this->mis->get(array('where' => 'id = ' . $id_missione));
			
			if(!$missione) die("Id missione sbagliato");
			
			
			$this->load->model('offerte_model', 'off');
			$this->template['rows'] = $this->off->get_ricevute($id_missione, $anno);
			$this->template['anno'] = $anno;
			$this->template['id_missione'] = $id_missione;
			
			$this->template['title'] = sprintf(__("Contabilit&agrave; Missione %s - %s", "adozioni"), $missione['nome'], $anno);
			$this->layout->load($this->template, 'contabilita_missioni_contabilita');
		}
		else
		{
			if(is_null($id_missione) || is_null($anno) || is_null($mese) ) die("Dati non sufficienti");
			$this->load->model('offerte_model', 'off');
			
			$params = array(
				'select' => 'o.id_sostenitore, o.id_assistito, o.data,o.note,o.netto as importo,s.nomecognome as sostenitore,s.id as idsostenitore,s.categoria as categoria,a.nomecognome as destinatario,a.info as info,c.nome as conto, ad.id as id_adozione',
				'where' => 'o.id_missione = ' . $id_missione . ' and extract(month from o.data) = ' . $mese . ' and extract(year from o.data) = ' . $anno . ' and o.trashed = 0 and o.data is not null',
				'order_by' => 's.nomecognome');
			$this->template['rows1'] = $this->off->get_list($params);
			$params['order_by'] = 'a.nomecognome';
			$this->template['rows2'] = $this->off->get_list($params);
			$this->load->model('missioni_model', 'mis');
			$missione = $this->mis->get(array('where' => 'id = ' . $id_missione));
			$this->template['title'] = sprintf(__("Introiti %s - %s", "adozioni"), $this->template['nome_mese'][ $mese ], $anno);
			$this->template['missione'] = $missione;
			$this->template['anno'] = $anno;
			$this->template['mese'] = $mese;
			$this->template['id_missione'] = $id_missione;
			
			if($detail == 'excel')
			{
				header('Content-type:application/vnd.ms-excel');
				header('Content-disposition: filename="Contabilita_Missione_' . $anno .  "_"  . $missione['nome'] . "_" . $this->template['nome_mese'][$mese]  . '.xls"');
				$this->load->view('contabilita_missioni_contabilita_excel', $this->template);
			}
			else
			{
				$this->layout->load($this->template, 'contabilita_missioni_contabilita_show');
			}
			
			
		}
	}

	function rimesse()
	{
		$mese = $this->input->post('mese');
		$anno = $this->input->post('anno');
		$id_categoria = $this->input->post('id_categoria');
		$id_rimessa = $this->input->post('id_rimessa');
		
		$rimesse =  $this->ado->get_rimesse();
		
		if(!$id_rimessa) $id_rimessa = $rimesse['0']['id'];
		
		if(!$mese) $mese = 1;
		
		if(!$anno) $anno = date('Y');
		
		$params['select'] = "c.nome as nome_categoria,s.nome as nome_sottocategoria, id_missione, cn.id as id_conto, cn.nome as conto, sum(valore) as tot_lordo, sum(trattenuta) as tot_trattenuta,sum(netto) as tot_netto, m.nome as nome_missione, extract(month from data) as mese,r.nome as rimesse";
		$params['where'] = "o.trashed = 0 and extract(month from data) = " . $mese . " AND extract(year from data) = " . $anno;
		$params['group_by'] = 'c.nome, id_missione, s.nome, p.nome,m.nome, mese, cn.id, cn.nome, r.nome';
		
		if($id_categoria) 
		{
			$params['where'] .= " and o.id_categoria = " . $id_categoria;
			$params['select'] .= ", o.id_categoria";
			$params['group_by'] .= ", o.id_categoria";
		}
		
		if($id_rimessa) $params['where'] .= " and r.id = " . $id_rimessa;
		
		
		$rst = $this->ado->get_report_missioni($params);
		//echo $this->db->last_query();
		
		
		
		//echo "<pre>"; var_dump($rst); exit; 
		
		$rows = array();
		$totale_generale = 0;
		
		
		if($rst)
		{
			for($i = 0; $i < count($rst); $i++)
			{
				
				if(!isset($rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['nome_sottocategoria']]))
				{
					$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['nome_sottocategoria']] = array('tot_lordo' => 0, 'tot_trattenuta' => 0, 'tot_netto' => 0);
				}
				/*
				if(!isset($rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']]))
				{
					$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']] = array('tot_lordo' => 0, 'tot_trattenuta' => 0, 'tot_netto' => 0);
				}
				*/
				
				$totale_generale += $rst[$i]['tot_netto'];
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['nome_sottocategoria']][$rst[$i]['conto']] = $rst[$i]['tot_lordo'];
				//$rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['conto']]['trattenuta'] = $rst[$i]['tot_trattenuta'];
				//$rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['conto']]['netto'] = $rst[$i]['tot_netto'];
				/*
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']]['id_missione'] = $rst[$i]['id_missione'];
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']]['tot_lordo'] += $rst[$i]['tot_lordo'];
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']]['tot_trattenuta'] += $rst[$i]['tot_trattenuta'];
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']]['tot_netto'] += $rst[$i]['tot_netto'];
				*/
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['nome_sottocategoria']]['id_missione'] = $rst[$i]['id_missione'];
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['nome_sottocategoria']]['tot_lordo'] += $rst[$i]['tot_lordo'];
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['nome_sottocategoria']]['tot_trattenuta'] += $rst[$i]['tot_trattenuta'];
				$rows[$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['nome_sottocategoria']]['tot_netto'] += $rst[$i]['tot_netto'];
				
			}		
		}
		//echo "<pre>"; var_dump($rows); exit; 
		
		$this->template['rows'] = $rows;
		$this->template['title'] = sprintf( __("Report missioni anno %s - mese %s", "adozioni"), $anno, $this->template['nome_mese'][$mese]);
        $this->template['anni'] = $this->ado->get_anni();
		$this->template['mese'] = $mese;
		$this->template['anno'] = $anno;
		$this->template['totale_generale'] = $totale_generale;
		$this->template['rimesse'] = $rimesse;
		$this->template['id_rimessa'] = $id_rimessa;
		$this->template['id_categoria'] = $id_categoria;
		$this->template['categorie'] = $this->ado->get_categorie();
        $this->template['conti'] = $this->ado->get_conti();
		
		if($this->input->post('excel'))
		{
			header('Content-type:application/vnd.ms-excel');
			header('Content-disposition: filename="Report_missioni_' . $anno .  "_"  . $this->template['nome_mese'][$mese]  . '.xls"');
			$this->load->view('contabilita_missioni_tutti_excel', $this->template);
		}
		else
		{
			$this->layout->load($this->template, 'contabilita_missioni_rimesse');
		}
	}
	
	function tutti()
	{
		$mese = $this->input->post('mese');
		$anno = $this->input->post('anno');
		
		if(!$mese) $mese = 1;
		
		if(!$anno) $anno = date('Y');
		
		$params['select'] = "o.id_categoria, c.nome as nome_categoria, id_missione, cn.id as id_conto, cn.nome as conto, sum(valore) as tot_lordo, sum(trattenuta) as tot_trattenuta,sum(netto) as tot_netto, m.nome as nome_missione, extract(month from data) as mese,r.nome as rimesse";
		$params['where'] = "o.trashed = 0 and extract(month from data) = " . $mese . " AND extract(year from data) = " . $anno;
		$params['group_by'] = 'o.id_categoria, c.nome, id_missione, p.nome,m.nome, mese, cn.id, cn.nome, r.nome';
		$params['order_by'] = "r.nome, m.nome";
		
		$rst = $this->ado->get_report_missioni($params);
		
		
		
		
		//echo "<pre>"; var_dump($rst); exit; 
		
		$rows = array();
		
		$totale_lordo = 0;
		$totale_trattenuta = 0;
		$totale_generale = 0;
		$totale_conto = array();
		
		
		
		for($i = 0; $i < count($rst); $i++)
		{
            if(!isset($rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']]))
            {
                $rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']] = array('tot_lordo' => 0, 'tot_trattenuta' => 0, 'tot_netto' => 0);
            }
			$totale_lordo += $rst[$i]['tot_lordo'];
			$totale_trattenuta += $rst[$i]['tot_trattenuta'];
			$totale_generale += $rst[$i]['tot_netto'];
			if(!isset($totale_conto[$rst[$i]['conto']])) $totale_conto[$rst[$i]['conto']] = 0;
			$totale_conto[$rst[$i]['conto']]  += $rst[$i]['tot_lordo'];
			
			$rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['conto']] = $rst[$i]['tot_lordo'];
			//$rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['conto']]['trattenuta'] = $rst[$i]['tot_trattenuta'];
			//$rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']][$rst[$i]['conto']]['netto'] = $rst[$i]['tot_netto'];
            
            $rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']]['tot_lordo'] += $rst[$i]['tot_lordo'];
            $rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']]['tot_trattenuta'] += $rst[$i]['tot_trattenuta'];
            $rows[$rst[$i]['nome_categoria']][$rst[$i]['rimesse']][$rst[$i]['nome_missione']]['tot_netto'] += $rst[$i]['tot_netto'];
		}		
		//echo "<pre>"; var_dump($rows); exit; 
		
		$this->template['rows'] = $rows;
		$this->template['title'] = sprintf( __("Report missioni anno %s - mese %s", "adozioni"), $anno, $this->template['nome_mese'][$mese]);
        $this->template['anni'] = $this->ado->get_anni();
		$this->template['mese'] = $mese;
		$this->template['anno'] = $anno;
		$this->template['totale_conto'] = $totale_conto;
		$this->template['totale_lordo'] = $totale_lordo;
		$this->template['totale_trattenuta'] = $totale_trattenuta;
		$this->template['totale_generale'] = $totale_generale;
        $this->template['conti'] = $this->ado->get_conti();
		
		if($this->input->post('excel'))
		{
			header('Content-type:application/vnd.ms-excel');
			header('Content-disposition: filename="Report_missioni_' . $anno .  "_"  . $this->template['nome_mese'][$mese]  . '.xls"');
			$this->load->view('contabilita_missioni_tutti_excel', $this->template);
		}
		else
		{
			$this->layout->load($this->template, 'contabilita_missioni_tutti');
		}
	}

	function annuali()
	{
		$nconti = 3;

		$id_paese 		= $this->input->post('id_paese');
		$id_categoria 	=  $this->input->post('id_categoria');
		$arr_mese 			=  $this->input->post('mese');
		
		$id_rimesse = $this->input->post('id_rimesse');
		$subcat = $this->input->post('subcat');
		
		
		
		$allowed_mese = array(1,2,3,4,5,6,7,8,9,10,11,12);
		if(empty($arr_mese)) 
		{
			$arr_mese = $allowed_mese;
		}

		foreach($arr_mese as $key => $val)
		{
			if(!in_array($val, $allowed_mese)) unset($arr_mese[ $key ]); //security
		}
		
		
		
		$trimestre		=  $this->input->post('trimestre');
		//$nomemese		= $this->template['nome_mese'][$mese];
		$anno 			=  $this->input->post('anno');        
		if(!$anno) $anno = date("Y");
		
		$totale_category = 0;
		$totale_country = 0;
        $params = array();
		
		
		$params['select'] = "o.id_categoria, c.nome as nome_categoria, id_missione, sum(netto) as tot_netto, m.nome as nome_missione, extract(month from data) as mese";
		$params['where'] = "o.trashed = 0 and extract(month from data) in (". join(", ", $arr_mese) .") and extract(year from data) = " . $anno;
		$params['group_by'] = 'o.id_categoria, c.nome, id_missione, p.nome,m.nome, mese';
		
		if($subcat)
		{
			$params['select'] .= ", s.nome as nome_scategoria";
			$params['group_by'] .= ", s.nome";
		}
		if($id_rimesse) 
		{
			$params['select'] .= ",r.nome as rimesse";
			$params['group_by'] .= ",r.nome";
			$params['where'] .= " AND r.id=" . $id_rimesse;
		}
		
        
		$rst = $this->ado->get_report_missioni($params);
		
		$rows = array();
		$totale_generale = 0;
		
		
		//echo "<pre>"; var_dump($rst); exit; 
		
		
		for($i = 0; $i < count($rst); $i++)
		{
			$totale_generale += $rst[$i]['tot_netto'];
			if($subcat)
			{
				$rows[$rst[$i]['nome_categoria']][$rst[$i]['nome_missione'] . " - " . $rst[$i]['nome_scategoria']][$rst[$i]['mese']] = $rst[$i]['tot_netto'];
			} 
			else
			{
				$rows[$rst[$i]['nome_categoria']][$rst[$i]['nome_missione']][$rst[$i]['mese']] = $rst[$i]['tot_netto'];
			}
		}
		
        $this->template['title'] = sprintf(__("Report missioni annuali: anno %s", "adozioni"), $anno);
		if($id_rimesse) $this->template['title'] .= " - " . $rst['0']['rimesse'];
		
		$this->template['rows'] = $rows;

        $this->template['rimesse'] = $this->ado->get_rimesse();
        $this->template['anni'] = $this->ado->get_anni();
		$this->template['arr_mese'] = $arr_mese;
		$this->template['anno'] = $anno;
		$this->template['id_rimesse'] = $id_rimesse;
		$this->template['subcat'] = $subcat;
		$this->template['totale_generale'] = $totale_generale;
        
		if($this->input->post('excel'))
		{
			header('Content-type:application/vnd.ms-excel');
			header('Content-disposition: filename="Report_missioni_' . $anno . '_' . join("_" , $arr_mese) . '.xls"');
			$this->load->view('contabilita_missioni_annuali_excel', $this->template);
		}
		else
		{
			$this->layout->load($this->template, 'contabilita_missioni_annuali');
		}
		
	}
	
	
	function test()
	{
		$query = $this->db->query("SELECT count(*) FROM offerte");
		
		$rst = $query->result();
		
		var_dump($rst);
		
	}
}
